package com.bestcem.xm.txtanls.dao.mapper;

import com.bestcem.xm.txtanls.entity.mysql.TopicEntity;
import org.apache.ibatis.annotations.Mapper;

import java.util.Date;
import java.util.List;

/**
 * ds_txtanls_topic表mapper
 *
 * @author hang.li <hang.li@idiaoyan.com>
 * @version v1.0
 * @date 2021/9/27 13:36
 */
@Mapper
public interface TopicMapper {

    /**
     * 新增话题
     *
     * @param topic TopicDO
     * @return 新增数据条数
     */
    int insertTopic(TopicEntity topic);

    /**
     * 根据id查询话题
     *
     * @param topicId 话题id
     * @return TopicDO
     */
    TopicEntity findTopicById(String topicId);

    /**
     * 查询话题list
     *
     * @param topicDO TopicDO
     * @return 话题list
     */
    List<TopicEntity> findTopicList(TopicEntity topicDO);

    /**
     * 查询话题list
     *
     * @param projectId
     * @return
     */
    List<TopicEntity> findAllTopic(String projectId);

    /**
     * 删除项目下的全部话题
     *
     * @param projectId 项目id
     * @return 删除数据数
     */
    int deleteTopicByProjectId(String projectId);

    /**
     * 根据话题id删除话题
     *
     * @param topicId 话题id
     * @return 删除数据数
     */
    int deleteTopicById(String topicId);

    /**
     * 根据名称查询项目下的话题数量
     *
     * @param projectId 项目id
     * @param name      话题名称
     * @return 总数
     */
    long getTotalByProjectIdAndName(String projectId, String name);

    /**
     * 修改单个话题组下所有话题的话题组id
     *
     * @param oldGroupId 旧话题组id
     * @param newGroupId 新话题组id
     * @param projectId  项目id
     * @return 修改数据条数
     */
    long updateGroupIdByProjectId(String oldGroupId, String newGroupId, String projectId, Date date);

    /**
     * 修改话题名
     *
     * @param topicId 话题id
     * @param name    话题名称
     * @return 修改数据条数
     */
    long updateNameById(String topicId, String name, Date date);

    /**
     * 更新关键字
     *
     * @param topicId  话题id
     * @param keywords 话题名称
     * @return 修改数据条数
     */
    long updateKeywordById(String topicId, String keywords, Date date);

    /**
     * 修改话题组id
     *
     * @param topicId 话题id
     * @param groupId 话题组id
     * @return 修改数据条数
     */
    long updateGroupIdById(String topicId, String groupId, Date date);


}
